package com.yinxin.logtest;


import org.apache.log4j.*;
import org.apache.log4j.spi.LoggingEvent;

import java.io.PrintWriter;

/**
 * Slf4j 是日志框架的抽象，它提供了接口，不提供实现！具体的实现，用户可以自由选择任何一个日志框架，
 * 比如 Log4j, Logback 等等。所以，我们只需要 maven 中引入具体的实现就好了。
 */

public class LogTest {
    public static final Logger logger=Logger.getLogger(LogTest.class);
    public static void main(String[] args) {
        //基本配置信息
//        BasicConfigurator.configure();
        //自定义一些配置
        Logger rootLogger = Logger.getRootLogger();
        ConsoleAppender consoleAppender = new ConsoleAppender();
        //consoleAppender需要一个输出流
        consoleAppender.setWriter(new PrintWriter(System.out));
        //需要一个layout  默认：PatternLayout.TTCC_CONVERSION_PATTERN

        PatternLayout layout = new PatternLayout("线程%t 等级为:%p 类名为:%c 时间为:%d，第%L行%n");;
//        Layout layout = new Layout() {
//            @Override
//            public void activateOptions() {
//
//            }
//            @Override
//            public String format(LoggingEvent loggingEvent) {
//                //某某线程打印那些日志信息
//                return loggingEvent.getThreadName()+"=========="+loggingEvent.getMessage()+loggingEvent+"\r\n";
//            }
//            @Override
//            public boolean ignoresThrowable() {
//                return false;
//            }
//        };
        consoleAppender.setLayout(layout);
        rootLogger.addAppender(consoleAppender);
        //日志记录输出
//        logger.info("info信息！");
        //日志级别
        logger.fatal("fatal信息！");//严重错误，造成系统崩溃和终止运行
        logger.error("error信息！");//错误信息，不会影响系统运行
        logger.warn("warn信息！");//警告信息，可能会发生的问题
        logger.info("info信息！");//程序运行信息，数据库连接、网络、io操作等
        new Thread(()->{
        logger.debug("debug信息！");//调试信息，一般在开发阶段使用，记录程序的变量、参数等
        },"t1").start();
//        new Thread(()->{
            logger.trace("trace信息！");//追踪信息，记录程序的所有流程信息
//        },"t1").start();

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
